﻿using System.Reflection;

namespace los11
{
    #region     知识点一   内部类
    //概念
    //在一个类中再申明一个类
    
    //特点
    //使用时要用包裹者点出自己

    //作用
    //亲密关系的变现

    //注意
    //访问修饰符作用很大
    class Person
    {
        public int age;
        public string name;
        public Body body;
        public class Body
        {
            arm leftarm;
            arm rightarm;
             class arm//内部类不说明默认私有的，就点不出来
            {

            }
        }
    }
    #endregion

    #region     知识点二   分部类
    //概念
    //把一个类分成及部分说明

    //关键字
    //partial

    //作用
    //分部描述一个类
    //增加程序的拓展性
    
    //注意
    //分部类可以写在多个脚本文件中
    //分布类的访问修饰符都要一致
    //分部类中不能有重复成员
    partial class Student//要加访问修饰符的话要一致
    {
        public bool sex;
        public string name;
        partial void Speak();
    }
    partial class Student
    {
        public int number;
        //public bool sex;不能重复
        partial void Speak()
        {
            //实现逻辑（分布方法）
        }
    }
    #endregion

    #region     知识点三   分布方法
    //概念
    //将方法的申明和实现分离
    //特点
    //1.不能加访问修饰符  默认私有
    //2.只能在分部类中申明
    //3.返回值只能是void
    //4.可以有参数但不用 out关键字

    //局限性大，了解即可
    #endregion
    internal class class11
    {
        static void Main(string[] args)
        {
            Console.WriteLine("内部类和分部类");
            Person p = new Person();
            Person.Body body = new Person.Body();//用内部类要用外部类名点出来
        }
    }
}
